// 除非遵守许可证，否则不得使用此文件。
// 您可以通过
// 
// www.apache.org/licenses/LICENSE-2.0 
// 
// 除非适用法律要求或书面同意，否则根据许可证分发的软件
// 按“原样”分发，
// 无任何明示或暗示的保证或条件。
// 请参阅许可证，了解管理许可的特定语言和
// 许可证下的限制。

package internal

// 操作描述对端点执行的操作（添加与删除）。
// 必须保持JSON格式与兼容：
// https:
type Operation uint8

const (
	// 添加表示添加了新地址。
	Add Operation = iota
	// 删除表示已删除现有地址。
	Delete
)

// 更新定义了一种持久（JSON封送）格式，表示etcd存储中的
// 端点。
// 
// 由于格式可以由一个版本的etcd客户端库保存，而
// 由另一个版本读取，因此格式必须保持向后兼容，尤其是
// 必须是grpc（<=1.29.1）命名的超集。更新结构：
// https:
// 
// 请记录支持etcd客户端给定属性的版本。
// 请保持命名与一致，例如。https:
// 
// 请注意，在更新中同时包含空字符串Addr和nil元数据是无效的。
type Update struct {
	// Op表示更新操作。
	// 从etcd 3.1开始。
	Op Operation
	// Addr是更新后的地址。如果没有地址更新，则为空字符串。
	// 从etcd 3.1开始。
	Addr string
	// 元数据是更新后的元数据。如果没有元数据更新，则为零。
	// 自定义命名实现不需要元数据。
	// 从etcd 3.1开始。
	Metadata interface{}
}
